package com.heze.xunhuan.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heze.xunhuan.dto.PostCreateDTO;
import com.heze.xunhuan.entity.Post;
import com.heze.xunhuan.vo.PageVO;
import com.heze.xunhuan.vo.PostVO;

/**
 * 信息服务接口
 *
 * @author heze-xunhuan
 */
public interface PostService extends IService<Post> {

    /**
     * 发布信息
     */
    Long createPost(Long userId, PostCreateDTO dto);

    /**
     * 更新信息
     */
    void updatePost(Long userId, Long postId, PostCreateDTO dto);

    /**
     * 删除信息
     */
    void deletePost(Long userId, Long postId);

    /**
     * 获取信息详情
     */
    PostVO getPostDetail(Long postId, Long currentUserId);

    /**
     * 分页查询信息列表
     */
    PageVO<PostVO> getPostPage(Integer page, Integer size, Integer categoryId, String subCategory,
                                Double lat, Double lng, Double radius, String sortBy);

    /**
     * 搜索信息
     */
    PageVO<PostVO> searchPosts(Integer page, Integer size, String keyword, Integer categoryId,
                                Double minPrice, Double maxPrice);

    /**
     * 获取我的发布
     */
    PageVO<PostVO> getMyPosts(Long userId, Integer page, Integer size, String status);

    /**
     * 记录浏览
     */
    void recordView(Long postId);

    /**
     * 获取发布限制
     */
    Object getPostLimit(Long userId);
}

